package middleware

import (
	"gitee.com/liuyun-luo/MagicStreamMovies/Server/utils"
	"github.com/gin-gonic/gin"
)

// 登陆验证中间件
func AuthMiddleWare() func(ctx *gin.Context) {
	return func(ctx *gin.Context) {
		token, err := utils.GetAccessToken(ctx)
		if err != nil {
			ctx.JSON(401, gin.H{
				"error": err.Error(),
			})
			ctx.Abort()
			return
		}

		claims, err := utils.ValidateToken(token)
		if err != nil {
			ctx.JSON(401, gin.H{
				"error": err.Error(),
			})
			ctx.Abort()
			return
		}
		ctx.Set("userId", claims.UserId)
		ctx.Set("role", claims.Role)

		ctx.Next()
	}
}

// 管理员身份验证中间件--需在登陆验证中间件之后被执行
func AdminAuthentication() func(*gin.Context) {
	return func(ctx *gin.Context) {
		role, err := utils.GetRoleFromContext(ctx)
		if err != nil {
			ctx.JSON(500, gin.H{
				"error": err.Error(),
			})

			ctx.Abort()
			return
		}

		if role != "ADMIN" {
			ctx.JSON(401, gin.H{
				"error": "缺少执行该操作的权限！",
			})
			ctx.Abort()
			return
		}
		ctx.Next()
	}
}
